JPUSH 两个问题

最近在调试公司项目的推送的时候遇到了点小问题,死活收不到推送消息。

由于接受公司项目的时候极光推送是已经集成上去了的,虽然说本地调试的时候会经常看见失败这种情况,一直也知道极光推送可能会出现一些收不到消息的问题,所以并没有在意。

后来公司需要通过tag给不同组别的用户推送消息,所以也要开始看一下以前的代码。果然还是被我发现了问题。

Q1

在登陆的时候设置了别名,但是在Appdelegate中并没有设置。

这中情况会造成app在保存密码之后进入app不会在走道登录界面,所以并不会设置别名什么的。这个时候的推送应该是收不到的。

这个我没有测试过,看了之前的代码之后直接的添加了相关代码,运行后并没有什么问题。

Q2

报错APNs is not available, please check your provisioning profile and certification

这个可能就全是我自身造成的了,为了尝鲜Swift3.0 下了Xcode8.0beta 来玩玩,然后本来是Xcode7.0打开的项目文件,默认8.0了,然后不小心运行到了公司的项目。很悲剧的是,Xcode8.0 是默认关闭Push Notifications的,Xcode中手动打开就ok了。然后其它添加证书什么的, 真的没什么好说的, 极光在文档中也已经描述的非常清楚了。

设置步骤: taget -> Capabilities -> PushNotification -> ON

Q3

设置别名悲剧 : app not registed, give up set tag: alias:

这是由于记住密码的情况下,设置别名什么的和注册极光等都是在很短的时间内,这个时候掉用的话,可能极光推送还不可用,所以就悲剧了.

解决方案:延迟调用设置别名的方法。

1
2
3
4
5
6
7
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[JPUSHService setTags:[NSSet setWithObject:_MUserInfo.partnerId]
alias:_MUserInfo.userId
fetchCompletionHandle:^(int iResCode, NSSet *iTags, NSString *iAlias) {
PSLog(@"-----%@", iAlias);
}];
});

ending

在集成的时候还是要注意一下方法的调用顺序, 别在注册JPush之前去设置什么东西吧! 猜想:这肯定是有问题的。

CepheusSun wechat
订阅我的公众号,每次更新我都不一定会告诉你!
坚持原创技术分享,您的支持将鼓励我继续创作!
0%